#pragma once

#include "logger_api.hpp"
#include <string>
#include <version>
#include <regex>  // 正则表达式库


class FilteringSink :  public ISink {
public:
    // 接收一个要装饰的底层Sink
    FilteringSink(std::shared_ptr<ISink> decorated_sink);

    // 添加敏感关键词和替换规则（正则表达式）
    void addFilter(const std::string& pattern, const std::string& replacement);

    void log(LogLevel, const std::string& formatted_message) override;

    std::string getName() override { return m_decoratedSink->getName() + "_filtered"; }

private:
    std::shared_ptr<ISink> m_decoratedSink;  // 被装饰的底层Sink
    std::vector<std::pair<std::regex, std::string>> m_filters;  // 过滤器列表
};
